/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.foxinline.manager.criar;

import br.com.foxinline.modelo.Protocolo;
import br.com.foxinline.modelo.Secretaria;
import br.com.foxinline.modelo.Setor;
import br.com.foxinline.modelo.Tramite;
import br.com.foxinline.modelo.Usuario;
import br.com.foxinline.servico.ProtocoloServico;
import br.com.foxinline.servico.SecretariaServico;
import br.com.foxinline.servico.TramiteServico;
import br.com.foxinline.servico.UsuarioServico;
import br.com.foxinline.util.Msg;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

/**
 *
 * @author ely
 */
@ManagedBean
@ViewScoped
public class ManagerCriarTramite {

    @EJB
    TramiteServico tramiteServico;
    @EJB
    SecretariaServico secretariaServico;
    @EJB
    UsuarioServico usuarioServico;
    @EJB
    ProtocoloServico protocoloServico;
    Protocolo protocolo;
    List<Tramite> tramites;
    Tramite tramite;
    List<Secretaria> secretarias;
    List<Setor> setores;
    Secretaria secretaria;
    Setor setor;
    List<Usuario> servidores;

    @PostConstruct
    public void init() {

        protocolo = new Protocolo();
        tramites = new ArrayList<Tramite>();
        tramite = new Tramite();
        secretarias = new ArrayList<Secretaria>();
        setores = new ArrayList<Setor>();
        secretaria = new Secretaria();
        setor = new Setor();
        servidores = new ArrayList<Usuario>();

    }

//    public List<Secretaria> todasSecretarias() {
//        secretarias =  secretariaServico.findAll();
//        return secretarias;
//    }
        public void todosSetoresSec() {
        if (tramite.getSecretaria() != null) {
            setores = secretariaServico.findSetores(tramite.getSecretaria());
        } else {
            setores = new ArrayList<Setor>();
        }
    }
    public void todosUsuarioSet() {
        if (setor != null) {
            servidores = usuarioServico.usuarioSetor(setor);
        } else {
            servidores = new ArrayList<Usuario>();
        }
    }

    public void pesquisar() {
        tramites = tramiteServico.findTramite(protocolo);

        if (!tramites.isEmpty()) {
            secretarias = secretariaServico.pesquisarTodos();

            for (Tramite t : tramites) {
                tramite = t;
                setores = secretariaServico.findSetores(tramite.getSecretaria());
            }
        } else {
            secretarias = null;
            setores = null;

        }

    }
    
    public Date prazoData() {
        Calendar c = Calendar.getInstance();
        c.add(Calendar.DAY_OF_YEAR, 15);
        return c.getTime();
    }

    public void updTramite() {
        try {
            Protocolo p = protocoloServico.existProtocolo(protocolo.getNumero());
            Tramite t = new Tramite();
            t.setSecretaria(tramite.getSecretaria());
            t.setServidor(tramite.getServidor());
            t.setParecer(tramite.getParecer());
            t.setSituacao(tramite.getSituacao());
            t.setDataTransmitente(new Date());
            t.setPrazo(prazoData());
            tramiteServico.salvar(t);
            tramites.add(t);
            p.setTramites(tramites);
            protocoloServico.atualizar(p);
            tramite = new Tramite();
            setores = new ArrayList<Setor>();
            secretarias = new ArrayList<Secretaria>();
            protocolo = new Protocolo();
            servidores = new ArrayList<Usuario>();
            
            Msg.messagemInfo("Tramite efetuado com Sucesso");
        } catch (Exception erro) {
            
        }
    }

    public Protocolo getProtocolo() {
        return protocolo;
    }

    public void setProtocolo(Protocolo protocolo) {
        this.protocolo = protocolo;
    }

    public List<Tramite> getTramites() {
        return tramites;
    }

    public void setTramites(List<Tramite> tramites) {
        this.tramites = tramites;
    }

    public Tramite getTramite() {
        return tramite;
    }

    public void setTramite(Tramite tramite) {
        this.tramite = tramite;
    }

    public List<Secretaria> getSecretarias() {
        return secretarias;
    }

    public void setSecretarias(List<Secretaria> secretarias) {
        this.secretarias = secretarias;
    }

    public List<Setor> getSetores() {
        return setores;
    }

    public void setSetores(List<Setor> setores) {
        this.setores = setores;
    }

    public Secretaria getSecretaria() {
        return secretaria;
    }

    public void setSecretaria(Secretaria secretaria) {
        this.secretaria = secretaria;
    }

    public Setor getSetor() {
        return setor;
    }

    public void setSetor(Setor setor) {
        this.setor = setor;
    }

    public List<Usuario> getServidores() {
        return servidores;
    }

    public void setServidores(List<Usuario> servidores) {
        this.servidores = servidores;
    }
}
